6.9 筛选索引之筛选
在pandas中对DateFrame表格筛选时,不仅可以对数据行行筛选,也可以对索引执行筛选,从而达到选择数据的目的,df.filter()函数则具有筛选索引的功能,结构如下:
df.filter(items=None,like=None,regex=None,axis=None)
items :精确匹配,写入保留的标签名称,标签名称存储在列表中
like :模糊匹配,写入要在索引中搜索的关键字;
regex :正则匹配,写入要匹配索引的正则表达式
axis :要筛选的方向;
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.筛选索引内容.xlsx" , index_col = 0 )
df1=df.filter([ "云南","山东" ], axis = 1 ) # 默认为axis=1,可以省略不写,必须加中括,否则查不到想要的结果
df2=df.filter([ "活塞","曲轴" ], axis = 0 )
print (df1)
print (df2)
返回:
云南 | 山东 | |
---|---|---|
推杆 | 24 | 71 |
活塞环 | 34 | 29 |
凸轮轴 | 23 | 27 |
空气滤芯 | 12 | 39 |
活塞 | 67 | 36 |
摇臂轴 | 76 | 33 |
曲轴 | 64 | 75 |
进气歧管 | 65 | 53 |
云南 | 山西 | 山东 | 河南 | 湖南 | 黑龙江 | |
---|---|---|---|---|---|---|
活塞 | 67 | 42 | 36 | 43 | 99 | 45 |
曲轴 | 64 | 23 | 75 | 26 | 76 | 83 |
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.筛选索引内容.xlsx" , index_col = 0 )
df1=df.云南.filter([ "活塞" ]) #Series数据也可以
print (df1)
返回:
活塞 | 67 |
Name: 云南, dtype: int64
模糊筛选是在like参数中设置,写入要查找的关键字,只要包含有关键字的索引标签都会保留下来。
正则筛选是在regex参数中的设置,写入要匹配索引标签的正则表达式,匹配成功的索引标签将保留下来。
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.筛选索引内容.xlsx" , index_col = 0 )
df1=df.filter(like= "轴" , axis = 0 )
print (df1)
返回:
云南 | 山西 | 山东 | 河南 | 湖南 | 黑龙江 | |
---|---|---|---|---|---|---|
凸轮轴 | 23 | 53 | 27 | 73 | 20 | 54 |
摇臂轴 | 76 | 72 | 33 | 81 | 56 | 77 |
曲轴 | 64 | 23 | 75 | 26 | 76 | 83 |
import pandas as pd
df=pd.read_excel(r "D:\Pyobject2023\object\测试\素材\测试素材.筛选索引内容.xlsx" , index_col = 0 )
df1=df.filter( regex = "^..$" , axis = 0 ) # ^..$表示两个字
print (df1)
返回:
云南 | 山西 | 山东 | 河南 | 湖南 | 黑龙江 | |
---|---|---|---|---|---|---|
推杆 | 24 | 43 | 71 | 26 | 56 | 54 |
活塞 | 67 | 42 | 36 | 43 | 99 | 45 |
曲轴 | 64 | 23 | 75 | 26 | 76 | 83 |